Computer software is used in many fields of endeavor, including public health. Typically, when a requirement for a particular software application comes to existence, this requirement is brought to a software development team and a project is undertaken. Software development is typically expensive both in terms of cost and time, since each scenario requires the development of many components specific to the particular requirements.
Object-oriented programming can help speed up software development by making available certain reusable programming objects. However, a programmer is still limited to a certain level of reusability, based on the contents of libraries of reusable objects. It is still necessary to write software code for all of the elements that will make use of the existing objects, and to rewrite that code if the requirements change.
The proliferation of internet technologies has led to an increase in the development of applications designed to run in a web browser, such as Microsoft® Internet Explorer, Mozilla Firefox, Safari, Opera and Netscape. A web browser is a software application that enables a user to display and interact with text, images, videos, music and other information, typically located on a web page at a website or on a local area network. Browser-based applications are advantageous in that they are cross-platform and can run on any operating system that can run a web browser. Many browser-based applications rely on forms for the collection, display and analysis of data, many of which have become quite sophisticated.
In known software development tools, such as ActiveX, a programmer can select tools from libraries and place them on a user interface screen for a form-based application. Resource scripting in C++ can also be used to draw a screen, and Microsoft® Access includes form generation wizards. However, these tools only assist in building screens. For example, Microsoft Access requires the separate creation of a database with which the generated form can communicate. In each of these cases, all of the communication rules and reporting mechanisms must be hard coded by a programmer. Changes in configuration result in having to modify software code and recompile the application.
Software functionality requirements typically include security requirements, or access policies. In the area of public health, such policies typically relate to the ability of different users to access different types of health data. When a software application is created, it is often necessary to also create an associated database, as well as a set of rules regarding data access and generation of reports. The integration and configuration of such components to form part of a customized solution can be very time consuming, in the order of 6 months, even if the stand-alone components already exist as a generic framework.
Known approaches, such as US 2004/0158820 and US 2005/0257196, can automatically convert a legacy application to a web-based application, or an application from one language to another. While such approaches can assist in the creation of certain portions of software, they do not provide software application tools to efficiently develop software and associated database and rules. A skilled software programmer must manually code these additional features.
It is, therefore, desirable to provide an improved software application architecture and software development approach to provide an end-to-end solution that can be easily implemented and configured to suit different needs.